一、認識 Mapping
概念說明:Mapping很像一個Hash Table(雜湊表),常用於一對一或一對多對應的資料儲存。
例如:
• 銀行帳戶對應存款金額
• 學生姓名對應成績
在這樣的狀況下:
•「key(鍵)」:用來對應資料(例如帳戶名、學生名)
•「value(值)」:對應的數值(例如金額、成績)
注意事項:
• Mapping並不是拿來存取key或value的資料庫,也沒有「長度」資訊。
• 它的運作方式像Hash Table,會根據key的雜湊值(keccak)去找到對應的value。
• 若key尚未被使用,系統會自動將該key對應的value初始化為0。
• 所以mapping沒有「不存在」的概念,只有「值為 0」的情況。
二、宣告 Mapping
語法格式如下:
mapping(key型別 => value型別) 名稱
mapping(string => uint) number // 學生名對應成績,命名為 number
三、Mapping 的刪除
若要刪除 Mapping 內特定 key 對應的值,必須使用正確語法:delete map[Zona];
注意:
• delete x; 只能用於一般變數(如 uint x=2; delete x; → x=0)。
• 但若是mapping,需要指定key,例如delete map[Zona];。
• 單純delete Zona; 是無法刪除mapping內的資料的。
四、Message
由兩種格式組成:
• Sender:傳送者來源位置(msg.sender)
• Value:傳送者送過來的 Wei(msg.value)
Tips
Mapping也是時常會使用到的,請牢記好它的特質。
五、參考來源
1.Solidity 30 天實戰教學 (2020) - Day 4 - Layout of a solidity code
這章節介紹了什麼是Mapping,下一章節要繼續來實作~
第二十四天書中的語錄是:
不知道各位讀者讀到這邊時還好嗎?如果覺得很累的話,也可以掃描每章節前面的QR Code,用聽的方式也能輔助你了解章節內容喔。找到最適合自己的方法才是最重要的!
(前面的文章我有附上作者影片,可點進去連結觀看)